TOP

Operadores SQL ANY e ALL

SQL ANY e ALL Descrição

As instruções SQL ANY e ALL permitem realizar comparações entre o valor de uma coluna e um intervalo de outros valores.


SQL ANY Descrição

Operador ANY:

  • retorna um valor booleano como resultado
  • retorna TRUE se ANY dos valores da subconsulta corresponderem à condição
  • ANY significa que a condição será verdadeira se a operação for verdadeira para qualquer um dos valores do intervalo.

    ANY Sintaxe

    SELECT column_name(s)
    FROM table_name
    WHERE column_name operator ANY
      (SELECT column_name
       FROM table_name
       WHERE condition)
    
    O operador deve ser um operador de comparação padrão (=, <>, !=, >, >=, < ou <=).

    SQL ALL Descrição

    Operador ALL:

  • retorna um valor booleano como resultado
  • retorna TRUE se os valores da subconsulta ALL corresponderem à condição
  • usado com operadores SELECT, WHERE e HAVING
  • ALL significa que a condição será verdadeira somente se a operação for verdadeira para todos os valores do intervalo.

    ALL Sintaxe junto com SELECT

    SELECT ALL column_name(s)
    FROM table_name
    WHERE condition
    

    ALL Sintaxe junto com WHERE ou HAVING

    SELECT column_name(s)
    FROM table_name
    WHERE column_name operator ALL
      (SELECT column_name
       FROM table_name
       WHERE condition)
    
    O operador deve ser um operador de comparação padrão (=, <>, !=, >, >=, < ou <=).

    Banco de dados de demonstração

    A seguir está um exemplo da tabela "Products" ("Produtos") do banco de dados "Northwind":

    ProductIDProductNameSupplierIDCategoryIDUnitPrice
    1Chais1110 boxes x 20 bags18.00
    2Chang1124 - 12 oz bottles19.00
    3Aniseed Syrup1212 - 550 ml bottles10.00
    4Chef Anton's Cajun Seasoning2248 - 6 oz jars22.00
    5Chef Anton's Gumbo Mix2236 boxes21.35
    6Grandma's Boysenberry Spread3212 - 8 oz jars25.00
    7Uncle Bob's Organic Dried Pears3712 - 1 lb pkgs.30.00
    8Northwoods Cranberry Sauce3212 - 12 oz jars40.00
    9Mishi Kobe Niku4618 - 500 g pkgs.97.00
    10Ikura4812 - 200 ml jars31.00

    E a amostra da tabela "OrderDetails" ("Detalhes do pedido"):

    OrderDetailIDOrderIDProductIDQuantity
    1102481112
    2102484210
    310248725
    410249149
    5102495140
    6102504110
    7102505135
    8102506515
    910251226
    10102515715

    Exemplos SQL ANY

    A consulta SQL a seguir lista ProductName se encontrar algum registro (ANY) na tabela OrderDetails com um valor Quantity igual a 10 (isso retornará TRUE porque a coluna Quantity tem alguns valores de 10):

    Run SQLSELECT ProductName
    FROM Products
    WHERE ProductID = ANY
      (SELECT ProductID
       FROM OrderDetails
       WHERE Quantity = 10)
    

    A consulta SQL a seguir lista ProductName se encontrar algum registro (ANY) na tabela OrderDetails com uma quantidade maior que 99 (isso retornará TRUE porque a coluna Quantity contém alguns valores maiores que 99):

    Run SQLSELECT ProductName
    FROM Products
    WHERE ProductID = ANY
      (SELECT ProductID
       FROM OrderDetails
       WHERE Quantity > 99)
    

    Outra instrução SQL lista ProductName se encontrar algum registro (ANY) na tabela OrderDetails com quantidade maior que 1000 (isso retornará FALSE porque a coluna Quantity não contém valores maiores que 1000):

    Run SQLSELECT ProductName
    FROM Products
    WHERE ProductID = ANY
      (SELECT ProductID
       FROM OrderDetails
       WHERE Quantity > 1000)
    

    Exemplos SQL ALL

    A instrução SQL a seguir lista todos os nomes de produtos (ALL):

    Run SQLSELECT ALL ProductName
    FROM Products
    WHERE TRUE
    

    A instrução SQL a seguir lista ProductName se todos os registros (ALL) na tabela OrderDetails tiverem uma contagem igual a 10. Claro, isso retornará FALSE porque a coluna Quantity tem muitos valores diferentes (não apenas o valor 10):

    Run SQLSELECT ProductName
    FROM Products
    WHERE ProductID = ALL
      (SELECT ProductID
       FROM OrderDetails
       WHERE Quantity = 10)